import enum


class OrderSourceEnum(enum.IntEnum):
    mall = 1


class OrderStatusEnum(enum.IntEnum):
    # 当订单刚下单的时候，处于未支付
    # 当订单下单之后之后 待发货
    # 当订单发货之后 待收货
    active = 10  # 活跃状态
    discard = 20  # 作废状态
    cancel = 30  # 已取消
    complete = 40  # 已完成
    shipping = 50  # 售后中
    shipping_complete = 60  # 售后完成


# 订单发货状态
class OrderShippingStatusEnum(enum.IntEnum):
    no_deliver = 1  # 不需要发货  直接到账
    wait_deliver = 2  # 待发货
    wait_receive = 3  # 已发货
    received = 4  # 已收货


# 订单支付状态
class OrderPayStatusEnum(enum.IntEnum):
    unpay = 1  # 未支付
    paid = 2  # 已支付
    part_pay = 3  # 部分支付


# 订单售后状态
class OrderComplaintStatusEnum(enum.IntEnum):
    no_refund = 1  # 没有售后
    refunding = 2  # 售后中
    refund_cancel = 3  # 售后关闭  包括售后中流转到售后关闭， 也可以直接就是没有售后， 或者到达时间之后关闭售后


# 订单退款状态
class OrderReturnStatusEnum(enum.IntEnum):
    no_return = 1  # 不允许退款
    can_return = 2
    return_cancel = 3  # 退款关闭 全部退款之后流转到这里


class OrderTypeEnum(enum.IntEnum):
    money = 1  # 金额订单
    point = 2  # 积分订单
    money_and_point = 3  # 积分和金额订单


class OrderItemReturnStatusEnum(enum.IntEnum):
    no_return = 1  # 不允许退款
    can_return = 2  # 允许退款
    return_cancel = 3  # 退款关闭 全部退款之后流转到这里


class OrderItemShippingStatusEnum(enum.IntEnum):
    no_deliver = 1  # 不需要发货  直接到账
    wait_deliver = 2  # 待发货
    wait_receive = 3  # 已发货
    received = 4  # 已收货


class OrderItemComplaintStatusEnum(enum.IntEnum):
    no_refund = 1  # 没有售后
    refunding = 2  # 售后中
    refund_cancel = 3  # 售后关闭  包括售后中流转到售后关闭， 也可以直接就是没有售后， 或者到达时间之后关闭售后


class OrderComplaintTypeEnum(enum.IntEnum):
    total = 1  # 整单退  当所有的item都退了之后就是整单退了
    single = 2  # 部分退


class QueueOrderOperateTypeEnum(enum.IntEnum):
    unpay = 1
    discard = 2
    pay = 3
    refund = 4


# C端查看订单状态的枚举值
class ClientQueryOrderStatusEnum(enum.IntEnum):
    ALL = 0
    WAIT_PAY = 1
    WAIT_DELIVER = 2
    WAIT_RECEIVE = 3
    WAIT_COMMENT = 4

